在第四文章裡介紹的核心概念中,第二項提到了計算圖和會話,那是TensorFlow 1.0 版本在使用的,前一天介紹的也是1.0版本的用法。而今天要來介紹取代計算圖的 Eager Execution 用到的語法,和其相關觀念。
在TensorFlow 2.0 最新版本中,不再使用會話( tf.Session() ),取而代之的是Eager Execution的功能,它讓張量運算可以立即執行,且不需要先建立計算圖,代碼也更加直觀和易於調整。
1.它可以創建張量並直接進行運算:
x = tf.constant(4)
y = tf.constant(5)
z = x + y
print("z:", z.numpy())
即可得出和為9。
2.它支持部分 Python 的語法,像是 if 語句和 for 循環:
def positive_or_nonpositive(x):
if x > 0:
return "Positive"
else:
return "Non-positive"
print(positive_or_nonpositive(tf.constant(6)))
6為正數,會輸出Positive。
3.讓自動微分更簡單:
x = tf.Variable(1.0)
with tf.GradientTape() as tape:
y = x ** 2
dy_dx = tape.gradient(y, x)
print("Gradient:", dy_dx.numpy())
會得到 Gradient: 2.0,不需要再建立計算圖,僅需要簡單的語法就可以算出來。
更新為 Eager Execution 後,不需要親自創建和管理計算圖,讓使用者將心力放在運算本身,而不是運算的結構,也能少學很多東西就上手。